package com.berchen.算法.排序;

import java.time.Duration;
import java.time.Instant;
import java.util.Arrays;

/**
 *
 * 选择排序
 * 第一轮 从所有数据中找到最小打数 和第一个数进行替换
 * 第二轮 从第二个数开始打后面所有数据中找到最小的一个数 和第二个进行替换
 * 。。。
 * 以此类推
 */
public class SelectSort {
    public static void main(String[] args) {

        int arr[]={-1,14,2,10,-5};

        int [] testArr=new int[80000];
        for(int i =0;i< testArr.length;i++){
            testArr[i]=(int)(Math.random()*80000);
        }
        Instant start=Instant.now();
        selectSort(testArr);
        Instant end = Instant.now();
        System.out.println(Duration.between(start,end).toMillis()); // 3533 毫秒
//        System.out.println(Arrays.toString(arr));
    }

    /**
     * 选择排序
     * @param arr
     */
    public static void selectSort(int[] arr){

        for(int i =0;i<arr.length-1;i++){
            int minValue=arr[i];
            int minIndex=i;
            for(int j =i+1;j<arr.length;j++){
                if(minValue>arr[j]){
                    minValue=arr[j];
                    minIndex=j;
                }
            }
            if(minIndex!=i){
                arr[minIndex]=arr[i];
                arr[i]=minValue;
            }
        }
    }

}
